# from langchain.chains import ConversationalRetrievalChain
#
# import os
# from langchain_community.embeddings import QianfanEmbeddingsEndpoint
# from langchain.text_splitter import RecursiveCharacterTextSplitter
# from langchain_community.document_loaders import Docx2txtLoader
# from langchain_community.vectorstores import Chroma
# from langchain.prompts import PromptTemplate
# from langchain.memory import ConversationBufferMemory,ConversationSummaryMemory
# from openai import OpenAI
# from langchain.chains import ConversationalRetrievalChain
# client = OpenAI(api_key="sk-bfdc307c3def4f9da9a06775a127e7a1", base_url="https://api.deepseek.com")
#
# os.environ["QIANFAN_AK"]="SGbbQdjFjlKurTfUIjYM0Q4P"
# os.environ["QIANFAN_SK"]="lb1tKvDGRhqLZYH4ZYpke6Vco9n9X8Xv"
# # 1. 定义问题重写提示（将对话历史和新问题转换为独立查询）
# condense_prompt = PromptTemplate(
#     input_variables=["chat_history", "question"],
#     template="""根据对话历史将后续问题重写为独立问题。保持问题的原意但使其完整独立。
#
#     对话历史:
#     {chat_history}
#
#     后续问题: {question}
#     独立问题:"""
# )
#
# # 2. 定义回答生成提示（使用检索到的文档生成最终回答）
# qa_prompt = PromptTemplate(
#     input_variables=["context", "question", "chat_history"],
#     template="""你是一个专业的知识助手，请根据以下信息回答问题。
#
#     ========= 相关上下文 =========
#     {context}
#
#     ========= 当前对话历史 =========
#     {chat_history}
#
#     ========= 用户问题 =========
#     {question}
#
#     请提供专业、准确、详细的回答。如果信息不足，请说明:"根据现有信息无法确定答案"。
#
#     专业回答:"""
# )
from langchain_deepseek import ChatDeepSeek
#
# # 3. 创建对话记忆
# memory = ConversationBufferMemory(
#     memory_key="chat_history",
#     return_messages=True,
#     output_key='answer'
# )
# llm = ChatDeepSeek(
#     model="deepseek-chat",
#     api_key="sk-bfdc307c3def4f9da9a06775a127e7a1"
# )
#
# new_path = "D:\\hbyt\\project\\AIBid\\EHS保障体系_v1.0_2211.docx"
# loader = Docx2txtLoader(new_path)
# pages = loader.load()
# text_spliter = RecursiveCharacterTextSplitter(
#     chunk_size=500,
#     chunk_overlap=50,
#     length_function=len,
#     add_start_index=True
# )
# text_documents = text_spliter.split_documents(pages)
# embeddings = QianfanEmbeddingsEndpoint()
# vectordb = Chroma.from_documents(documents=text_documents, embedding=embeddings,
#                                  persist_directory="D:\\hbyt\\project\\AIBid\\db")
# retriever = vectordb.as_retriever(search_kwargs={"k": 10})
# # 4. 创建完整对话链
# # 创建对话链
# qa = ConversationalRetrievalChain.from_llm(
#     llm=llm(temperature=0),
#     retriever=retriever
# )
#
# # # 使用示例
# # result = qa({"question": "LangChain是什么?"})
# # print(result["answer"])
# from langchain.chat_models import ChatOpenAI
# from langchain.embeddings import OpenAIEmbeddings
# from langchain.vectorstores import FAISS
# from langchain.prompts import ChatPromptTemplate, SystemMessagePromptTemplate, HumanMessagePromptTemplate
#
# # 构建提示模板
# system_template = """你是一个有帮助的AI助手。根据以下上下文回答问题:
# ----------------
# {context}"""
# messages = [
#     SystemMessagePromptTemplate.from_template(system_template),
#     HumanMessagePromptTemplate.from_template("{question}")
# ]
# qa_prompt = ChatPromptTemplate.from_messages(messages)
#
# # 创建对话链
# qa = ConversationalRetrievalChain.from_llm(
#     llm=llm,
#     retriever=retriever,
#     condense_question_llm=llm,
#     combine_docs_chain_kwargs={"prompt": qa_prompt},
#     return_source_documents=True,
#     verbose=True
# )
#
# # 使用示例
# chat_history = []
# question = "LangChain是什么?"
# result = qa({"question": question, "chat_history": chat_history})
# print("答案:", result["answer"])
# res = qa.invoke({
#     "question": question,
#     "chat_history": st.session_state["messages"]  # 传入聊天历史
# })
# # 更新聊天历史
# chat_history.append((question, result["answer"]))

# import streamlit as st
#
# # 创建文本内容
# text_content = "这是你要下载的内容。"
#
# # 将字符串转换为 bytes
# text_bytes = text_content.encode('utf-8')
#
# # 创建下载按钮
# st.download_button(
#     label="下载文本文件",
#     data=text_bytes,
#     file_name="example.txt",
#     mime="text/plain"
# )

# import streamlit as st
#
# file_path = "example.pdf"  # 本地文件路径
#
# # 读取本地文件为字节
# with open(file_path, "rb") as f:
#     file_bytes = f.read()
#
# # 创建下载按钮
# st.download_button(
#     label="下载 PDF 文件",
#     data=file_bytes,
#     file_name="example.pdf",  # 下载时保存的文件名
#     mime="application/pdf"    # MIME 类型可根据文件类型调整
# )


# import streamlit as st
# # file_path = "D:\\hbyt\\AI智能投标\\2025_04_23_Word\\2025_04_23_Word\\Word\\1.0\\中文\\HR选育留用相关\\激励及绩效管理_v1.0_2201.docx"
# # 读取 docx 文件为字节
# file_path="D:/hbyt/AI智能投标/2025_04_23_Word/2025_04_23_Word/Word/3.1/中文/公司资质/慧博（上海）软件_资质证书_v3.1_2406.docx"
# with open(file_path, "rb") as f:
#     file_bytes = f.read()
# # 显示下载按钮
# st.download_button(
#     label="下载 Word 文件",
#     data=file_bytes,
#     file_name="example.docx",
#     mime="application/vnd.openxmlformats-officedocument.wordprocessingml.document"
# )
#
# import streamlit as st
#
# # 添加自定义CSS
# st.markdown("""
# <style>
# /* 修改所有按钮的基础样式 */
# .stButton>button {
#     color: white;
#     background: #FF4B4B;
#     width: 20px;
#     height: 5px;
#     border-radius: 10px;
#     border: none;
#     font-size: 16px;
#     font-weight: bold;
# }
# </style>
# """, unsafe_allow_html=True)
#
# # 创建按钮
# st.button("pdf")
# st.markdown("<h1 style='text-align: center;'>我的居中标题</h1>", unsafe_allow_html=True)
#
# st.markdown("""
# <style>
# .stButton>button {
#     transition: all 0.3s ease;
#     background: linear-gradient(to right, #FF4B4B, #FF8E8E);
# }
#
# .stButton>button:hover {
#     transform: scale(1.05);
#     box-shadow: 0 5px 15px rgba(255, 75, 75, 0.4);
# }
#
# .stButton>button:active {
#     transform: scale(0.98);
# }
# </style>
# """, unsafe_allow_html=True)
#
# st.button("带悬停效果的按钮")
#
# st.markdown("""
# <style>
# .custom-btn {
#     background: linear-gradient(to right, #00c6ff, #0072ff) !important;
#     border: none !important;
#     color: white !important;
#     padding: 15px 32px !important;
#     text-align: center !important;
#     text-decoration: none !important;
#     display: inline-block !important;
#     font-size: 16px !important;
#     margin: 4px 2px !important;
#     cursor: pointer !important;
#     border-radius: 25px !important;
#     box-shadow: 0 4px 8px 0 rgba(0,0,0,0.2) !important;
# }
# </style>
# """, unsafe_allow_html=True)
#
# st.markdown('<button class="custom-btn">自定义类按钮</button>', unsafe_allow_html=True)
#
#
# st.markdown("""
# <style>
# /* 通过按钮文字内容选择特定按钮 */
# button[kind="primary"] {
#     background: green !important;
# }
#
# /* 通过父容器选择 */
# div[data-testid="stVerticalBlock"] > div[data-testid="stHorizontalBlock"] > div > div > button {
#     background: purple;
# }
# </style>
# """, unsafe_allow_html=True)
#
# col1, col2 = st.columns(2)
# with col1:
#     st.button("绿色按钮", key="btn1")
# with col2:
#     st.button("紫色按钮", key="btn2")
#
# import streamlit as st
#
# # 创建一个容器
# with st.container():
#     st.write("""
#     ## 用户使用手册
#
#     这里是手册的详细内容...
#     包含所有功能的使用说明。
#     """)
#
#     # 添加垂直间距
#     st.write("")  # 空行增加间距
#
#     # 添加下载按钮
#     pdf_path = "D:\\hbyt\\AI智能投标\\ok.pdf"
#     with open(pdf_path, "rb") as f:
#         st.download_button(
#             label="下载完整手册(PDF)",
#             data=f,
#             file_name="用户使用手册.pdf",
#             mime="application/pdf"
#         )
#
# import streamlit as st
#
# # 显示文字内容
# st.write("""
# ## 数据分析报告
#
# 这里是您的分析结果内容...
# 此处是详细的分析报告正文，
# 包含各种数据分析的发现和结论。
# """)
#
# # 在文字下方添加下载按钮
# text_content = """数据分析报告摘要
#
# 主要发现：
# 1. 发现A
# 2. 发现B
# 3. 发现C
#
# 结论：建议采取XX行动"""
#
# st.download_button(
#     label="下载报告摘要",
#     data=text_content,
#     file_name="分析报告摘要.txt",
#     mime="text/plain"
# )
#
# import streamlit as st
#
# # 使用HTML和Markdown实现更紧密的布局
# st.markdown("""
# <div style="margin-bottom: 10px;">
# ## 项目说明文档
#
# 这里是项目详细说明内容...
# 文档包含所有必要的实施细节。
# </div>
# """, unsafe_allow_html=True)
#
# # 紧跟在文字后面的下载按钮
# csv_data = "类别,数值\nA,10\nB,20\nC,30"
# st.download_button(
#     label="下载数据CSV",
#     data=csv_data,
#     file_name="项目数据.csv",
#     mime="text/csv",
#     key="csv_download"  # 确保key唯一
# )
#
# import streamlit as st
# import pandas as pd
#
# # 显示文字内容
# st.write("""
# ## 实验数据结果
#
# 以下是实验的详细数据结果...
# """)
#
# # 创建示例数据框
# df = pd.DataFrame({
#     '实验组': ['A', 'B', 'C'],
#     '结果': [12.5, 15.2, 9.8]
# })
#
# # 显示数据
# st.dataframe(df)
#
# # 在文字和数据框下方添加下载按钮
# col1, col2, col3 = st.columns([1,2,1])
# with col2:
#     st.download_button(
#         label="下载完整数据",
#         data=df.to_csv(index=False).encode('utf-8'),
#         file_name="实验数据.csv",
#         mime="text/csv",
#         use_container_width=True  # 使按钮宽度适应列宽
#     )
#
#     import streamlit as st
#     import datetime
#
#     # 生成动态内容
#     report_content = f"""
#     # 每日报告
#     生成时间: {datetime.datetime.now()}
#
#     今日统计:
#     - 访问量: 1245
#     - 转化率: 2.3%
#     - 收入: $3456
#     """
#
#     # 显示内容
#     st.markdown(report_content)
#
#     # 提供下载
#     st.download_button(
#         label="下载本报告",
#         data=report_content,
#         file_name=f"daily_report_{datetime.date.today()}.md",
#         mime="text/markdown"
#     )


# import os
# from openai import OpenAI
# os.environ["DASHSCOPE_API_KEY"]="sk-5c6689dccd074a739c78ef7d1d780148"
# client = OpenAI(
#     # 若没有配置环境变量，请用阿里云百炼API Key将下行替换为：api_key="sk-xxx",
#     api_key=os.getenv("DASHSCOPE_API_KEY"), # 如何获取API Key：https://help.aliyun.com/zh/model-studio/developer-reference/get-api-key
#     base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",
# )
#
# # 通过 messages 数组实现上下文管理
# messages = [
#     {'role': 'user', 'content': '你好'}
# ]
#
# completion = client.chat.completions.create(
#     model="deepseek-r1",  # 此处以 deepseek-r1 为例，可按需更换模型名称。
#     messages=messages
# )
#
# print("="*20+"第一轮对话"+"="*20)
# # 通过reasoning_content字段打印思考过程
# print("="*20+"思考过程"+"="*20)
# print(completion.choices[0].message.reasoning_content)
# # 通过content字段打印最终答案
# print("="*20+"最终答案"+"="*20)
# print(completion.choices[0].message.content)
#
# messages.append({'role': 'assistant', 'content': completion.choices[0].message.content})
# messages.append({'role': 'user', 'content': '你是谁'})
# print("="*20+"第二轮对话"+"="*20)
# # completion = client.chat.completions.create(
# #     model="deepseek-r1",  # 此处以 deepseek-r1 为例，可按需更换模型名称。
# #     messages=messages
# # )
# # 通过reasoning_content字段打印思考过程
# print("="*20+"思考过程"+"="*20)
# print(completion.choices[0].message.reasoning_content)
# # 通过content字段打印最终答案
# print("="*20+"最终答案"+"="*20)
# print(completion.choices[0].message.content)
#
# import dashscope
# from dashscope import Generation
# import streamlit as st
# import os
#
#
# dashscope.api_key='sk-5c6689dccd074a739c78ef7d1d780148'
#
# if 'history' not in st.session_state:
#     st.session_state['history']=[]
#
# def get_response(mess):
#     response=Generation.call(
#         model="deepseek-v3",
#         messages=mess,
#         result_format='message' # 将输出设置为message格式
#     )
#     return response
#
#
# def prompt_yun(ct):
#     st.session_state['history'].append({"role":"user","content":ct})
#     return st.session_state['history']
#
# for i in st.session_state["history"]:
#     st.chat_message(i["role"]).write(i["content"])
#
# if p_y:= st.chat_input():
#     st.chat_message("user").write(p_y)
#     p_y_y=prompt_yun(p_y)
#     print(p_y_y)
#     res=get_response(p_y_y)
#     print(res)
#     st.session_state['history'].append(dict(res.output.choices[0].message))
#     st.chat_message("ai").write(res.output.choices[0].message["content"])
#
# import streamlit as st
# from io import BytesIO
# import pandas as pd
#
# st.title("多格式文件上传与预览")
#
# uploaded_file = st.file_uploader("上传文件", type=["txt", "csv", "xlsx", "pdf", "docx", "doc"])
#
# if uploaded_file is not None:
#     st.success(f"成功上传：{uploaded_file.name}")
#     file_type = uploaded_file.type
#
#     # txt 文件
#     if file_type == "text/plain":
#         text = uploaded_file.read().decode("utf-8")
#         st.text_area("文本内容", text, height=300)
#
#     # csv 文件
#     elif file_type == "text/csv":
#         df = pd.read_csv(uploaded_file)
#         st.dataframe(df)
#
#     # xlsx 文件
#     elif file_type == "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":
#         df = pd.read_excel(uploaded_file)
#         st.dataframe(df)
#
#     # pdf 文件
#     elif file_type == "application/pdf":
#         from PyPDF2 import PdfReader
#         reader = PdfReader(uploaded_file)
#         text = "\n".join([page.extract_text() for page in reader.pages])
#         st.text_area("PDF 内容", text, height=300)
#
#     # docx 文件
#     elif file_type == "application/vnd.openxmlformats-officedocument.wordprocessingml.document":
#         from docx import Document
#         doc = Document(uploaded_file)
#         text = "\n".join([para.text for para in doc.paragraphs])
#         st.text_area("Word 文档内容（.docx）", text, height=300)
#
#     # doc 文件
#     elif file_type == "application/msword":
#         try:
#             import mammoth
#             result = mammoth.convert_to_markdown(BytesIO(uploaded_file.read()))
#             text = result.value
#             st.markdown(text)
#         except Exception as e:
#             st.error("无法读取 .doc 文件，建议转换为 .docx")
#


# import dashscope
# from dashscope import Generation
# import streamlit as st
# import os
#
#
# dashscope.api_key='sk-fd6c79bf32274aae845c9d3372b6331b'
#
# # 设置页面标题
# st.set_page_config(page_title="AI生成投标标书", page_icon="📊")
#
# with st.sidebar:
#     st.markdown("<h1 style='text-align: center;color: red;'>AI智能标书</h1>", unsafe_allow_html=True)
#
# if 'history' not in st.session_state:
#     st.session_state['history']=[]
#
# def get_response(mess):
#     response=Generation.call(
#         model="qwen-turbo",
#         messages=mess,
#         result_format='message' # 将输出设置为message格式
#     )
#     return response
#
#
# def prompt_yun(ct):
#     st.session_state['history'].append({"role":"user","content":ct})
#     return st.session_state['history']
#
# for i in st.session_state["history"]:
#     st.chat_message(i["role"]).write(i["content"])
#
# if p_y:= st.chat_input():
#     st.chat_message("user").write(p_y)
#     p_y_y=prompt_yun(p_y)
#     res=get_response(p_y_y)
#     st.session_state['history'].append(dict(res.output.choices[0].message))
#     st.sidebar.chat_message("ai").write(res.output.choices[0].message["content"])


import os

# from past.builtins import raw_input

# from openai import OpenAI
os.environ["DASHSCOPE_API_KEY"]="sk-fd6c79bf32274aae845c9d3372b6331b"
# client = OpenAI(
#     # 若没有配置环境变量，请用阿里云百炼API Key将下行替换为：api_key="sk-xxx",
#     api_key=os.getenv("DASHSCOPE_API_KEY"), # 如何获取API Key：https://help.aliyun.com/zh/model-studio/developer-reference/get-api-key
#     base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",
# )
#
# # 通过 messages 数组实现上下文管理
# messages = [
#     {"role": "system", "content": "你是一个投标小助手，只能根据用户的提示回答投标的内容，不能回答额外的话题"},
#     {"role": "user", "content": "Hello"},
# ]
#
# completion = client.chat.completions.create(
#     model="deepseek-v3",  # 此处以 deepseek-r1 为例，可按需更换模型名称。
#     messages=messages
# )
#
# print("="*20+"第一轮对话"+"="*20)
# # 通过reasoning_content字段打印思考过程
# print("="*20+"思考过程"+"="*20)
# # 通过content字段打印最终答案
# print("="*20+"最终答案"+"="*20)
# print(completion.choices[0].message.content)
#
# messages.append({'role': 'assistant', 'content': completion.choices[0].message.content})
# messages.append({'role': 'user', 'content': '你是谁'})
# print("="*20+"第二轮对话"+"="*20)
# completion = client.chat.completions.create(
#     model="deepseek-v3",  # 此处以 deepseek-r1 为例，可按需更换模型名称。
#     messages=messages
# )
# # 通过reasoning_content字段打印思考过程
# print("="*20+"思考过程"+"="*20)
# # 通过content字段打印最终答案
# print("="*20+"最终答案"+"="*20)
# print(completion.choices[0].message.content)


# from openai import OpenAI
# import os
# import base64
#
#
# #  base 64 编码格式
# def encode_image(image_path):
#     with open(image_path, "rb") as image_file:
#         return base64.b64encode(image_file.read()).decode("utf-8")
#
# # 将xxxx/eagle.png替换为你本地图像的绝对路径
# base64_image = encode_image("D:\\hbyt\\AI智能投标\\典型招标要求和投标文件\\华泰证券\\投标文件-技术服务方案-华泰证券.docx")
#
# client = OpenAI(
#     # 若没有配置环境变量，请用百炼API Key将下行替换为：api_key="sk-xxx"
#     api_key=os.getenv('DASHSCOPE_API_KEY'),
#     base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",
# )
# completion = client.chat.completions.create(
#     model="qwen-vl-max-latest", # 此处以qwen-vl-max-latest为例，可按需更换模型名称。模型列表：https://help.aliyun.com/model-studio/getting-started/model
#     messages=[
#     	{
#     	    "role": "system",
#             "content": [{"type":"text","text": "You are a helpful assistant."}]},
#         {
#             "role": "user",
#             "content": [
#                 {
#                     "type": "image_url",
#                     # 需要注意，传入Base64，图像格式（即image/{format}）需要与支持的图片列表中的Content Type保持一致。"f"是字符串格式化的方法。
#                     # PNG图像：  f"data:image/png;base64,{base64_image}"
#                     # JPEG图像： f"data:image/jpeg;base64,{base64_image}"
#                     # WEBP图像： f"data:image/webp;base64,{base64_image}"
#                     "image_url": {"url": f"data:image/png;base64,{base64_image}"},
#                 },
#                 {"type": "text", "text": "图中描绘的是什么景象?"},
#             ],
#         }
#     ],
# )
# print(completion.choices[0].message.content)

# -*- coding:utf - 8 -*-
# import urllib
# import urllib3
#
# url = "http://www.baidu.com/s"
# keyword = raw_input("請輸入需要查詢的內容：")
# wd = {"wd：",keyword }
#
# headers = {"User-Agent":"Mozilla"}
#
# wd = urllib.urlencode(wd)
#
# fullurl = url + "?" + wd
#
# request = urllib3.Request(fullurl,headers = headers)
#
# reponse = urllib3.urlopen(request)
#
# print (reponse.read())

# from baidusearch.baidusearch import search
# results=search("ragflow是什么项目",num_results=100)
# print(results)

# import os
# import time
# import requests
# import json
#
# def post_m(dic):
#     rex = requests.post(url, json=dic, headers=headers)
#     return rex
#
# url = "https://airec.baidu.com/airec/api/search/main"
# ak = "323475515d4bfccc1af3f3676ec0256d"
# headers = {"Content-Type": "application/json", "X-Gw-Ak": ak, "Alias-Name": "in9iamvk-26"}
#
# body = {
#     "uid": "uid_1",
#     "query": "王维"
# }
#
# begin = time.time()
# rex = post_m(body)
# end = time.time()
# print("using time: {}, status {}, ret content: {}".format(round(end - begin, 6), rex.status_code, rex.text))


# Please install OpenAI SDK first: `pip3 install openai`

import os
from openai import OpenAI


import os
import dashscope

messages = [
    {'role': 'system', 'content': '你是一个投标小助手，不要回答其他的内容.根据我给的目录，帮我写投标文件'},
    {'role': 'user', 'content': '''一、 投标函
二、 开标一览表
三、 服务工作方案

3.1. 外包团队管理能力

3.1.1. 外包人员日常管理方案

3.1.2. 外包人员稳定性管理方案

3.1.3. 人员绩效与激励方案

3.2. 外包团队交付方案

3.2.1. 针对某头部证券的需求响应方案

3.2.2. 人员贮备情况

3.2.3. 针对某头部证券采购需求制定的招聘计划和方案

3.2.4. 针对某头部证券的招聘团队设置

3.2.5. 针对某头部证券的定期沟通计划

3.2.6. 针对某头部证券的服务质量改进计划

3.3. 安全和法律风险方案

3.3.1. 信息安全方案

3.3.2. 法律风险方案

3.3.3. 后勤保障

四、 法定代表人授权书
五、 招标文件规定的其他资料

5.1. 营业执照

5.2. 近三年审计报告

5.2.1. 2023年审计报告

5.2.2. 2022年审计报告

5.2.3. 2021年审计报告

5.3. 完税证明

5.4. 社保参保证明

5.5. "信用中国"网站截图

5.5.1. 未被列入失信被执行人

5.5.2. 未被列入税收违法黑名单

5.5.3. 政府采购严重违法失信行为记录名单

5.6. 最近三月内的中国人民银行征信中心出具的信用报告

5.7. 一般纳税人证明材料

5.8. 一般情况表

5.9. 资质证书

5.9.1. 软件成熟度认证CMMI Level5

5.9.2. 测试成熟度认证TMMI Level3

5.9.3. ISO9001：质量管理体系认证证书

5.9.4. ISO27001：信息安全管理体系认证证书

5.9.5. ISO27701：隐私信息管理体系认证证书

5.9.6. ISO20000：服务管理体系认证证书

5.9.7. ISO14001：环境管理体系认证证书

5.9.8. ISO45001：职业健康安全管理体系认证证书

5.9.9. ITSS认证

5.9.10. 数据管理能力成熟度-二级（DCMM2级）

5.9.11. 中国增值电信业务经营许可证

5.9.12. 高新技术企业证书

5.9.13. 信创证书

5.9.14. 软件产品证书

5.9.15. 软件企业认定证书

5.9.16. 企业信用评价AAA级信用企业

5.9.17. 中国移动：物联网优秀合作伙伴

5.9.18. Alibaba×工信国际：数智设计产业合作伙伴

5.9.19. 荣誉：2024"数据要素×"数智服务创新服务商

5.9.20. 荣誉：2024年度社会责任突出贡献集体

5.9.21. 荣誉：2024年度先进基层党组织

5.9.22. 荣誉：2024年余杭区"数字经济创新发展示范企业"

5.9.23. 荣誉：2023浙江省成长性最快百强企业

5.9.24. 荣誉：2023慧博科技社会突出荣誉证书

5.9.25. 荣誉：2023慧博科技先进基层党组织荣誉证书

5.9.26. 荣誉：《数字经济》杂志-2022-2023年度数字经济十大最具影响力企业

5.9.27. 荣誉：2022-2023年度数字经济十大最具影响力企业

5.9.28. 荣誉：2021-2022软件信息技术服务领导品牌

5.9.29. 荣誉：2021中国软件和信息服务业年度创新企业

5.9.30. 荣誉：2021人力资源管理杰出奖

六、 投标承诺函（须加盖公章）

6.1. 资格要求承诺书

6.2. 诚信承诺书

七、 投标人类似业绩表
八、 人员配备表

8.1. 项目成员表

8.2. 各项目人员简历

8.2.1. 孙武南

8.2.2. 薛亚飞

8.2.3. 朱明会

8.2.4. 张艺成

8.2.5. 杨斌

8.2.6. 张晓晗

8.2.7. 栗云露

8.2.8. 张桂汕

8.2.9. 董吉祥

8.2.10. 毕晓船

8.2.11. 覃俊

8.2.12. 贾梦凯

8.2.13. 王潇

8.2.14. 桂良成

8.2.15. 阮浩

8.2.16. 李香雨

8.2.17. 杨艺

8.2.18. 罗超

8.2.19. 陈厚霖

8.2.20. 李磊

8.2.21. 孙利豪

8.2.22. 杨恒博

8.2.23. 张博文

8.2.24. 王梦洁

8.2.25. 薛子腾

8.2.26. 柴恩庆

8.2.27. 黄恒

8.2.28. 李明雨

8.2.29. 陈祥雄

8.2.30. 邹亚卉

8.2.31. 余龙

8.2.32. 吴正义

8.2.33. 王传弼

8.2.34. 陈鹤

8.2.35. 郭壮

8.2.36. 王岗

8.2.37. 潘灿宇

8.2.38. 胡赛军

8.2.39. 张港辉

8.2.40. 代恩运

8.2.41. 余小满

8.2.42. 阿迪力江·阿卜杜热伊木

8.2.43. 张一超

8.2.44. 徐广宇

8.2.45. 明黄栋

8.2.46. 祝佳津

8.2.47. 王思瑶

8.2.48. 胡嘉跃

8.2.49. 胡叶骏

8.2.50. 毛宗泱

8.2.51. 沈震

8.2.52. 魏小东

8.2.53. 邱俊茗

8.2.54. 刘焜鹏

8.2.55. 周荣伟

8.2.56. 王学虎

8.2.57. 彭佳超

8.2.58. 阮松威

8.2.59. 张博士

8.2.60. 翟先浩

8.2.61. 朱周青

8.2.62. 黄伟琴

8.2.63. 周鹏羽

8.2.64. 赵明升

8.2.65. 匡贤飞

8.2.66. 李伯杰

8.2.67. 胡杨晨

8.2.68. 杨良恒

8.2.69. 许平

8.2.70. 周能勇

8.2.71. 高晨

8.2.72. 程建强

8.2.73. 刘正睿

8.2.74. 陈诗文

8.2.75. 高振

8.2.76. 刘文茂

8.2.77. 陈贝贝

8.2.78. 张特君

8.2.79. 李连民

8.2.80. 刘金平

8.2.81. 郑里

8.2.82. 崔文情

8.2.83. 王文超

8.2.84. 赵晔

8.2.85. 张婷婷

8.2.86. 孙超

8.2.87. 刘子铭

8.2.88. 赵玮

8.2.89. 周婷芳

8.2.90. 沈熠辉

8.2.91. 师建松

8.2.92. 徐争光

8.2.93. 杨雅婷

8.2.94. 章学义

8.2.95. 黄锐

8.2.96. 王国兵

8.2.97. 刘克灼

8.2.98. 裴梦柯

8.2.99. 王帅

8.2.100. 王恒

8.2.101. 沈亚齐

8.2.102. 燕学文

8.2.103. 黄雪兰

8.2.104. 潘尚博

8.2.105. 陈加炜

8.2.106. 管锐

8.2.107. 王鹏飞

8.2.108. 任鹏

8.2.109. 张忠旭

8.2.110. 许威

8.2.111. 来利灿

8.2.112. 沈哲侃

8.2.113. 沈洁

8.2.114. 张明亮

8.2.115. 潘泉

8.2.116. 孙天宇

8.2.117. 孙传浩

8.2.118. 李洋

8.2.119. 赵海

8.2.120. 刘今

8.2.121. 温联坤

8.2.122. 陈瑶

8.2.123. 曾洪祥

8.2.124. 彭伟

8.2.125. 李小松

8.2.126. 彭文军

8.2.127. 石浩

8.2.128. 靳守红

8.2.129. 胡建飞

8.2.130. 孙营营

8.2.131. 任亚东

8.2.132. 孙廷雷

8.2.133. 黄浩斌

8.2.134. 李桩桩

8.2.135. 毛淑娜

8.2.136. 孙朋

8.2.137. 孙鑫锋

8.2.138. 王奔奔

8.2.139. 潜华江

8.2.140. 秦黎明

8.2.141. 吕玲

8.2.142. 尚朋朋

8.2.143. 刘小展

8.2.144. 张智强

8.2.145. 许耀耀

8.2.146. 江庆

8.2.147. 杨翠

8.2.148. 余帮华

8.2.149. 金梦

8.2.150. 韩锡兆

九、 主要负责人简历表（须提供本项目项目经理、副经理（如有）等主要负责人的情况）
十、 投标人与其他单位资产关联、隶属关系、股权关系框图
十一、 投标人参加远程异地开标仪式须知
按照这个目录开始填写'''}

    ]
response = dashscope.Generation.call(
    # 若没有配置环境变量，请用百炼API Key将下行替换为：api_key="sk-xxx",
    api_key=os.getenv('DASHSCOPE_API_KEY'),
    model="qwen-plus", # 此处以qwen-plus为例，可按需更换模型名称。模型列表：https://help.aliyun.com/zh/model-studio/getting-started/models
    messages=messages,
    result_format='message'
    )
save_path="D:\\hbyt\\AI智能投标\\生成标书文件\\投标文件.docx"
with open(save_path, "w") as f:
    f.write(response['output']['choices'][0]['message']['content'])
print(response['output']['choices'][0]['message']['content'])